<?php
class VehiculosController extends CustomController
{

    public function verVehiculos()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Get page and list
        $pageNumber = $this->getPage();
        $vehiculos = $this->model->getVehiculos($pageNumber);
        $vars = array(
            'edit_action'     => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_EDITAR_VEHICULO).'?id=',
            'delete_action'   => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_BORRAR_VEHICULO).'?id=',
            'pagination_link' => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_LISTAR_VEHICULOS),
            'vehiculos'       => $vehiculos
        );
        $this->view->verVehiculos($vars);
    }

    public function nuevoVehiculo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Basic vars
        $vars = array(
            'nuevo_vehiculo' => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_CREAR_VEHICULO)
        );
        // Post?
        if ($_POST)
        {
            $vehiculo = $this->getValue('vehiculo');
            $vehiculo['numero_vehiculo'] = intval($vehiculo['numero_vehiculo']);
            if (empty($vehiculo['nombre'])) $errs[]='El nombre no puede estar vac&iacute;o';
            if (empty($vehiculo['patente'])) $errs[]='La patente no puede estar vac&iacute;a';
            if (empty($vehiculo['numero_vehiculo'])) $errs[]='El numero no puede estar vac&iacute;o';
            if (empty($vehiculo['identificador_gps'])) $errs[]='El identificador gps no puede estar vac&iacute;o';
            if (!empty($errs))
            {
                $this->error($errs);
            }
            else
            {
				$patenteInUse = $this->model->patenteInUse($vehiculo['patente']);
			    if ($patenteInUse)
				{
				    $errs[]= 'La patente elegida ya se encuentra en uso';
					$this->error($errs);
					$vehiculo['patente'] = '';
				}
				else
				{
					if (!$this->model->gpsInUse($vehiculo['identificador_gps']))
					{
						if ($this->model->nuevoVehiculo($vehiculo))
						{
							$this->notice("Vehiculo agregado exitosamente.");
							$this->redirectTo(MODULE_VEHICULOS);
						}
						else
						{
							$this->error("Error agregando vehiculo. Por favor intente nuevamente.");
						}
					}
					else
					{
						$this->error("El identificador gps ya se encuentra en uso por otro veh&iacute;culo.");
						$vehiculo['identificador_gps'] = '';
					}
				}
            }
            $vars['vehiculo'] = $vehiculo;
        }
        // View
        $this->view->nuevoVehiculo($vars);
    }

    public function borrarVehiculo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Check if id exists
        $id = $this->getValue('id');
        $id = intval($id);
        if ($vehiculo = $this->model->vehiculoExists($id))
        {
            if ($this->model->borrarVehiculo($id))
            {
                $this->notice("Veh&iacute;culo borrado con &eacute;xito");
            }
            else
            {
                $this->error("El veh&iacute;culo no pudo ser borrado");
            }
            $this->redirectTo(MODULE_VEHICULOS);
        }
        else
        {
            $this->error("El veh&iacute;culo indicado no existe");
            $this->redirectTo(MODULE_VEHICULOS);
        }
    }

    public function editarVehiculo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Check if id exists
        $id = $this->getValue('id');
        $id = intval($id);
        if ($vehiculo = $this->model->vehiculoExists($id))
        {
            // Basic vars
            $vars = array(
                'editar_vehiculo' => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_EDITAR_VEHICULO)
            );
            if ($_POST)
            {
                $vehiculoPost = $this->getValue('vehiculo');
                $vehiculoPost['numero_vehiculo'] = intval($vehiculoPost['numero_vehiculo']);
                if (empty($vehiculoPost['nombre'])) $errs[]='El nombre no puede estar vac&iacute;o';
                if (empty($vehiculoPost['patente'])) $errs[]='La patente no puede estar vac&iacute;a';
                if (empty($vehiculoPost['numero_vehiculo'])) $errs[]='El numero no puede estar vac&iacute;o';
                if (empty($vehiculoPost['identificador_gps'])) $errs[]='El identificador gps no puede estar vac&iacute;o';
                if (!empty($errs))
                {
                    $this->error($errs);
                }
                else
                {
					$patenteInUse = $this->model->patenteInUse($vehiculoPost['patente']);
					if (!($patenteInUse) || (isset($patenteInUse[$id])))
					{
						$gpsInUse = $this->model->gpsInUse($vehiculoPost['identificador_gps']);
						if ((!$gpsInUse) || (isset($gpsInUse[$id])))
						{
							if ($this->model->editarVehiculo($vehiculo['idvehiculo'], $vehiculoPost))
							{
								$this->notice("Veh&iacute;culo editado exitosamente.");
								$this->redirectTo(MODULE_VEHICULOS);
							}
							else
							{
								$this->error("Error editando veh&iacuute;culo. Por favor intente nuevamente.");
							}
						}
						else
						{
							$this->error("El identificador gps ya se encuentra en uso por otro veh&iacute;culo.");
							$vehiculoPost['identificador_gps'] = '';
						}
					}
					else
					{
						$errs[]= 'La patente elegida ya se encuentra en uso';
						$this->error($errs);
						$vehiculo['patente'] = '';
					}
                }
                $vehiculoPost['idvehiculo'] = $vehiculo['idvehiculo'];
                $vehiculo = $vehiculoPost;
            }
            $vars['vehiculo'] = $vehiculo;
            // View
            $this->view->editarVehiculo($vars);
        }
        else
        {
            $this->error("El veh&iacute; indicado no existe");
            $this->redirectTo(MODULE_VEHICULOS);
        }

    }
}
?>